package com.holly.unit.bpmn.activiti.pojo;

import com.holly.unit.core.pojo.request.BaseRequest;
import com.holly.unit.scanner.api.annotation.field.ChineseDescription;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotNull;
import java.util.HashMap;
import java.util.Map;

/**
 * 类描述: 提交申请 启动流程 参数封装
 *
 * @author fxr
 * @version 1.0.0
 * @date 2022/3/4 10:41
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class ProcessBusiApplyRequest extends BaseRequest {

    /**表单路由*/
    @NotNull(message = "表单路由信息不能为空", groups = {applyBusi.class})
    @ChineseDescription("表单路由")
    private String routeName;
    /**流程名称*/
    @NotNull(message = "流程名称信息不能为空", groups = {applyBusi.class})
    @ChineseDescription("流程名称")
    private String processName;
    /**id*/
    @ChineseDescription("主键")
    private String id;
    /**delFlag*/
    @ChineseDescription("流程名称")
    private String delFlag;
    /**流程定义id*/
    @NotNull(message = "流程定义id信息不能为空", groups = {applyBusi.class})
    @ChineseDescription("流程定义id")
    private String procDefId;
    /**程实例id*/
    @NotNull(message = "程实例id信息不能为空", groups = {applyBusi.class})
    @ChineseDescription("程实例id")
    private String procInstId;
    /**结果状态 0未提交默认 1处理中 2通过 3驳回*/
    @NotNull(message = "结果状态信息不能为空", groups = {applyBusi.class})
    @ChineseDescription("结果状态 0未提交默认 1处理中 2通过 3驳回")
    private Integer result ;
    @NotNull(message = "状态信息不能为空", groups = {applyBusi.class})
    @ChineseDescription("状态 0草稿默认 1处理中 2结束")
    /**状态 0草稿默认 1处理中 2结束*/
    private Integer status ;
    @NotNull(message = "关联表的数据id信息不能为空", groups = {applyBusi.class})
    @ChineseDescription("关联表的数据id")
    /**关联表的数据id*/
    private String tableId;
    @NotNull(message = "申请标题信息不能为空", groups = {applyBusi.class})
    @ChineseDescription("申请标题")
    /**申请标题*/
    private String title;
    @NotNull(message = "创建用户id信息不能为空", groups = {applyBusi.class})
    @ChineseDescription("创建用户id")
    /**创建用户id*/
    private String userId;
    @NotNull(message = "提交申请时间信息不能为空", groups = {applyBusi.class})
    @ChineseDescription("提交申请时间")
    /**提交申请时间*/
    private String applyTime;
    @NotNull(message = "历史标记信息不能为空", groups = {applyBusi.class})
    @ChineseDescription("历史标记")
    /**历史标记*/
    private Boolean isHistory;
    @NotNull(message = "数据表名信息不能为空", groups = {applyBusi.class})
    @ChineseDescription("数据表名")
    /**数据表名*/
    private String tableName;
    @NotNull(message = "所属应用信息不能为空", groups = {applyBusi.class})
    @ChineseDescription("所属应用id")
    /**所属应用id*/
    private String appid;
    @NotNull(message = "分配用户信息不能为空", groups = {applyBusi.class})
    @ChineseDescription("分配用户")
    /**分配用户username*/
    private String assignees;
    @NotNull(message = "任务优先级信息不能为空", groups = {applyBusi.class})
    @ChineseDescription("任务优先级 默认0   0普通1重要2紧急")
    /*任务优先级 默认0   0普通1重要2紧急*/
    private Integer priority = 0;
    @NotNull(message = "当前任务信息不能为空", groups = {applyBusi.class})
    @ChineseDescription("当前任务")
    /**当前任务*/
    private String currTaskName;

    @ChineseDescription("第一个节点是否为网关")
    /**第一个节点是否为网关*/

    private Boolean firstGateway = false;
    @NotNull(message = "站内消息信息不能为空", groups = {applyBusi.class})
    @ChineseDescription("是否发送站内消息")
    /**是否发送站内消息*/
    private Boolean sendMessage;
    /**是否发送短信通知*/
    @NotNull(message = "短信信息不能为空", groups = {applyBusi.class})
    @ChineseDescription("是否发送短信通知")
    private Boolean sendSms;
    /**是否发送邮件通知*/
    @NotNull(message = "邮件通知信息不能为空", groups = {applyBusi.class})
    @ChineseDescription("是否发送邮件通知")
    private Boolean sendEmail;
    /**流程设置参数*/
    @NotNull(message = "流程设置参数信息不能为空", groups = {applyBusi.class})
    @ChineseDescription("流程设置参数")
    private Map<String, Object> params = new HashMap<>(16);

    /**
     * 参数校验分组：提交申请发起流程校验
     */
    public @interface applyBusi {
    }
}
